package com.cyt.work.kwmanagement.service;

import com.cyt.base.model.dto.ReturnResult;
import com.cyt.work.kwmanagement.model.po.KwStudentMessage;
import com.cyt.work.kwmanagement.model.vo.KwStudentExportVo;
import com.cyt.work.kwmanagement.model.vo.KwStudentMessageVo;
import com.cyt.sys.model.po.SysUser;
import com.cyt.sys.service.BaseService;
import com.cyt.work.kwmanagement.model.vo.KwStudentStaticVo;
import com.cyt.wx.model.po.WxEducationUser;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 考务学生表-考务学生表Service层接口类
 *
 * @author han jun
 * @date 2019-11-26 11:24:38
 */
public interface KwStudentMessageService extends BaseService<KwStudentMessage> {

    /**
     * 查询对象集合
     *
     * @param kwStudentMessageVo 对象
     * @return List 对象集合
     * @author han jun
     * @date 2019-11-26 11:24:38
     */
    List<KwStudentMessage> listExample(KwStudentMessageVo kwStudentMessageVo);

    /**
     * 分页查询
     *
     * @param kwStudentMessageVo 接受参数对象
     * @param pageNum          分页数
     * @param pageSize         每页显示条数
     * @return ReturnResult
     * @author han jun
     * @date 2019-11-26 11:24:38
     */
    ReturnResult page(KwStudentMessageVo kwStudentMessageVo, int pageNum, int pageSize);



    /**
     * 查询导入的关联的学生
     *
     * @param kwStudentMessageVo 接受参数对象
     * @param pageNum          分页数
     * @param pageSize         每页显示条数
     * @return ReturnResult
     * @author han jun
     * @date 2019-11-26 11:24:38
     */

     ReturnResult pageNew(KwStudentMessageVo kwStudentMessageVo, int pageNum, int pageSize);

    ReturnResult pageNewOther(KwStudentMessageVo kwStudentMessageVo, int pageNum, int pageSize);

    /**
     * 查询导入的关联的学生
     *
     * @param kwStudentMessageVo 接受参数对象
     * @return ReturnResult
     * @author han jun
     * @date 2019-11-26 11:24:38
     */

    List<KwStudentExportVo> exPortStu(KwStudentMessageVo kwStudentMessageVo);


    /**
     * 查询学生考试签到情况
     *
     * @param kwStudentMessageVo 接受参数对象
     * @return ReturnResult
     * @author han jun
     * @date 2019-11-26 11:24:38
     */

    ReturnResult studentSignList(KwStudentMessageVo kwStudentMessageVo);



    /**
     * 添加或更新
     *
     * @param kwStudentMessageVo 参数接受对象
     * @param sysUser      当前用户
     * @return ReturnResult
     * @author han jun
     * @date 2019-11-26 11:24:38
     */
    ReturnResult addOrUpdate(KwStudentMessageVo kwStudentMessageVo, SysUser sysUser);

    /**
     * 根据条件逻辑删除
     *
     * @param kwStudentMessageVo 参数接受对象
     * @param sysUser      当前用户
     * @return ReturnResult
     * @author han jun
     * @date 2019-11-26 11:24:38
     */
    ReturnResult remove(KwStudentMessageVo kwStudentMessageVo, SysUser sysUser);

    /**
     * 根据条件物理删除
     *
     * @param kwStudentMessageVo 参数接受对象
     * @param sysUser      当前用户
     * @return ReturnResult
     * @author han jun
     * @date 2019-11-26 11:24:38
     */
    ReturnResult delete(KwStudentMessageVo kwStudentMessageVo, SysUser sysUser);

    /**
     * 导入
     * @param file
     * @param sysUser
     * @author hanjun
     * @date 2019/9/3 13:47
     */
    ReturnResult importExcel(MultipartFile file,String ksId,SysUser sysUser, String applyId);

    /**
     * 导入成绩
     * @param file
     * @param sysUser
     * @author hanjun
     * @date 2019/9/3 13:47
     */
    ReturnResult importExcelStudentScore(MultipartFile file,String ksId,SysUser sysUser, String applyId);

    /**
     * 分配学生
     *
     * @param sysUser            用户信息
     * @param kwStudentMessageVo 传入参数对象
     * @return ResultDto
     * @author hanjun
     * @date 2018-10-27 11:00:07
     *  */
      ReturnResult startDistributeStudent(KwStudentMessageVo kwStudentMessageVo,  SysUser sysUser);


    /**
     * 获取学生准考证信息
     *
     * @param kwStudentMessageVo 传入参数对象
     * @return ResultDto
     * @author hanjun
     * @date 2018-10-27 11:00:07
     *  */
    ReturnResult getExamAttance(KwStudentMessageVo kwStudentMessageVo, WxEducationUser wxEducationUser);


    /**
     * 获取学生考试的统计
     *
     * @param pageNum 传入参数对象
     * @return ResultDto
     * @author hanjun
     * @date 2018-10-27 11:00:07
     *  */
    ReturnResult getAllStudentStatic(int pageNum, int pageSize);


    /**
     * 获取考场学生签到的详情
     *
     * @param pageNum 传入参数对象
     * @return ResultDto
     * @author hanjun
     * @date 2018-10-27 11:00:07
     *  */

     ReturnResult getAllStudentSign(KwStudentMessageVo newKwstudentVo, int pageNum, int pageSize);


    /**
     * 获取学生统计汇总
     *
     * @return ResultDto
     * @author hanjun
     * @date 2018-10-27 11:00:07
     *  */
     List<KwStudentStaticVo> getAllKsStudent();


}